home *** CD-ROM | disk | FTP | other *** search
/ C/C++ Users Group Library 1996 July / C-C++ Users Group Library July 1996.iso / listings / v_09_08 / 9n08050a < prev    next >
Text File  |  1991-06-16  |  1KB  |  35 lines

  1. #include <stdlib.h>
  2. #include "pof.h"
  3.  
  4. char find_color(rgb color, ColorNode *node)
  5. {
  6.     int watch;
  7.  
  8.     if (!(color.Red+color.Grn+color.Blu)) return (0);   /* 0th Palette case */
  9.     watch = (((color.Red < node->key.Red)<<2) +
  10.                  ((color.Grn < node->key.Grn)<<1) +
  11.                                                 (color.Blu < node->key.Blu));
  12.  
  13.     if ((watch == 0) && (color.Red == node->key.Red) &&
  14.                         (color.Grn == node->key.Grn) &&
  15.                                                                 (color.Blu == node->key.Blu))
  16.                                 return(node->pal_num);
  17.  
  18.          else if (node->Link[watch] != NULL) /* off to next node */
  19.           return(find_color(color, node->Link[watch]));
  20.  
  21.     else return(node->pal_num);
  22. }
  23.  
  24. char ffind_color(float R, float G, float B, ColorNode *node)
  25. {
  26.     rgb temp;
  27.  
  28.     temp.Red = (char)(63.0*R);
  29.     temp.Grn = (char)(63.0*G);
  30.     temp.Blu = (char)(63.0*B);
  31.  
  32.     return(find_color(temp,node));
  33. }
  34.  
  35.